package com.example.skudemo.utils;
import java.util.*;

public class MathUtils {
    /**
     * 求并集
     *
     * @param m
     * @param n
     * @return
     */
    public static <T> List getB(List<T> m, List<T> n) {
        Set<T> setN = new HashSet<>(n);
        Set<T> setM = new HashSet<>(m);
        setN.addAll(setM);
        return new ArrayList(setN);
    }

    /**
     * 求交集
     *
     * @param m
     * @param n
     * @return
     */
    public static <T> List getJ(List<T> m, List<T> n) {
        Set<T> setN = new HashSet<>(n);
        Set<T> setM = new HashSet<>(m);
        setN.retainAll(setM);
        return new ArrayList(setN);
    }

    /**
     * 求差集
     *
     * @param m
     * @param n
     * @return
     */
    public static <T> List getC(List<T> m, List<T> n) {
        //转化最长列表
        Set<T> set = new HashSet<>(n.size() > m.size() ? n : m);
        //循环最短列表
        for (T t : n.size() > m.size() ? m : n) {
            if (set.contains(t)) {
                set.remove(t);
            } else {
                set.add(t);
            }
        }
        return new ArrayList(set);
    }
}
